function* generator() {
  console.log('开始执行');
  yield 1; // 第一个暂停点 产出 {value:1,done:false} 给第一个调用next的地方
  console.log('继续执行');
  yield 2; // 第二个暂停点
  console.log('执行结束');
  return 3; // 函数结束
}

// 调用生成器函数，返回生成器对象（未执行函数体）
const gen = generator();

// 第一次调用 next()：从函数开头执行到第一个 yield 处暂停
console.log(gen.next()); 
// 输出：
// 开始执行
// { value: 1, done: false }

// 第二次调用 next()：从第一个 yield 后继续，执行到第二个 yield 处暂停
console.log(gen.next()); 
// 输出：
// 继续执行
// { value: 2, done: false }

// 第三次调用 next()：从第二个 yield 后继续，直到函数结束（遇到 return）
console.log(gen.next()); 
// 输出：
// 执行结束
// { value: 3, done: true }

// 后续调用 next()：生成器已完成，始终返回 { value: undefined, done: true }
console.log(gen.next()); // { value: undefined, done: true }


function * throwIntoGenerator(){
    try {
        const result = yield '正常';
        return '结果为'+result;
    }
    catch(error) {
        yield "捕获到异常"  ;  // {value:'捕获到异常',done:false}
    }
}

//启动生成器,并不会执行函数体
startGen = throwIntoGenerator()

const res = startGen.next() //执行到 yield '正常' 后就暂停执行后面代码，产出'正常'给 {value:"正常",done:false}
console.log("第一次",res)

const second_next = startGen.next("传入值:100")
console.log("second_next=",second_next)

// const second_throw = startGen.throw(new Error('抛出异常'))
// console.log("second_throw=",second_throw)

const last_next = startGen.next()

console.log("last_next=",last_next)